<?php
/**
 * NAME: rss_reader
 * WHEN: OnMsg
 * PROVIDES: !rss
 * AUTOLOAD: true
 * DESCRIPTION: Prosty czytnik kanałów RSS.
 * VERSION: 0.1
 * UPDATE: http://update.tempaq2.blacksoft.eu/check.php
 * AUTHOR: blacksoft.eu
 */
 
 exit();
 
//*function_start
	if ($data->messageex[0]=="!bash") {
		$data->message = "!rss bash";
		$data->messageex = explode(" ",$data->message);
	}
	if ($data->messageex[0]=="!rss") {
		//"rss" => "id int not null, basic text, url text"
		//unset($table);
		//equire_once(MODULES_DIR.'other/table.php');
		//$table = new table('rss');
		
		sqlite::create('rss',array(
			'id'=>'INT',
			'basic'=>'VARCHAR',
			'url'=>'VARCHAR',
		));
		
		$kanaly = sqlite::fetchSQL('SELECT * FROM rss ORDER BY basic');
		
		//$kanaly=$table->get();
		//$table->sort($kanaly, 'basic');
		//przekształcamy to do czytelniejszego dla ludu formata
		unset($channellist);
		$channellist=array();
		if (is_array($kanaly))
			foreach ($kanaly as $v) $channellist[$v['basic']]=$v['url'];
		
		//do dopracowania na plikach
		if ($this->is_admin($data->nick)) {
			//funkcje dla admina - do zarządzania kanałami w plikach
			if ($data->messageex[1]=="add" && isset($data->messageex[2]) && isset($data->messageex[3])) {
				//dodawanie kanału
				if (preg_match("/^[a-z0-9\.]{1,15}$/",$data->messageex[2]) && $this->isUrl($data->messageex[3])) {
					$rssname=$data->messageex[2];
					$rssurl=$data->messageex[3];
					
					//sprawdzamy czy nie istnieje już może przypadkiem taki plik albo taki kanał
					if (isset($channellist[$rssname])) {
						$this->send('Kanał o nazwie '.$rssname.' już istnieje!');
					} else {
						unset($kanal);
						$kanal['basic']=$rssname;
						$kanal['url']=$rssurl;
						sqlite::insert('rss',$kanal);
						$this->send('Kanał został dodany');
					}
				} else {
					$this->send('W nazwie kanału zostały użyte niedozwolone znaki.');
				}
			} elseif ($data->messageex[1]=="remove" || $data->messageex[1]=="del") {
				//usuwanie kanału
				//ktoś by to musiał napisać :P
				//mowisz-masz:)
				if (preg_match("/^[a-z0-9\.]{1,15}$/", $data->messageex[2]) && isset($channellist[$data->messageex[2]])) {
					sqlite::query('DELETE FROM rss WHERE basic="'.$data->messageex[2]);
					//$table->delete('basic', $data->messageex[2], '=');
					$this->send('Kanał usunięty poprawnie.');
				} else {
					$this->send('Taki kanał nie istnieje!');
				}
			}
		}
				
		$jestkanal=false;
		if (isset($channellist[$data->messageex[1]])) {
			$jestkanal=true;
			$channelurl=$channellist[$data->messageex[1]];
		}
		
		if (empty($data->messageex[1])) {
			//informacja o pomocy?
			$this->send("Użyj !rss help, aby uzyskać pomoc.");
		} elseif ($data->messageex[1]=="help") {
			//nie tak do końca standardowo wyświetlamy pomoc
			$this->send("Dostępne komendy:");
			$this->send(" - !rss list -> lista kanałów");
			$this->send(" - !rss kanal -> ostatnia wiadomść z kanału \"kanal\"");
			$this->send(' - !rss kanal count -> wyświetla ilość wiadomości na kanale "kanal"');
			$this->send(" - !rss kanal rand -> wyświetla losową wiadomość z kanału \"kanal\"");
			$this->send(" - !rss kanal id -> wyświetla wiadomość o \"id\" z \"kanal\"");
		} elseif ($data->messageex[1]=="list") {
			//lista kanałów
			foreach ($channellist as $k=>$v) {
				$msg.=$k."; ";
			}
			$this->send("Dostępne kanały:");
			$this->send($msg);
		} elseif ($jestkanal) {
			if (require_once(MODULES_DIR."other/lastRSS.php")) {
				if (!isset($lastrss)) $lastrss = new lastRSS;
				$x = $lastrss->Get($channelurl);
				
				$losuj=false;
				if ($data->messageex[1]=="humor") $losuj=true;
				if ($data->messageex[2]=="rand") $losuj=true;
				
				if ($losuj) {
					//losujemy element
					$itemtoshow=$x["items"][rand(0,count($x["items"]))]["description"];
				} else {
					//wybieramy ostatni
					$itemtoshow=$x["items"][0]["description"];
				}
				//wybieramy o określonym id
				if (is_numeric($data->messageex[2])) {
					$id=$data->messageex[2];
					if (strlen($x["items"][$id]["description"])>0) {
						$itemtoshow = $x["items"][$id]["description"];
					} else {
						$itemtoshow = "Błąd: Nie ma wiadomości o ID ".$id."!";
					}
				}
				if ($data->messageex[2]=='count') {
					$itemtoshow='Ilość wiadomości: '.count($x['items']);
				}
				
				$tmp_msg=str_replace(array("Wiecej...","Więcej...","\n","\r"),array("",""," ",""),$this->my_iconv("bez-ogonkow", $itemtoshow));
				
				$this->send(html_entity_decode(strip_tags(html_entity_decode($tmp_msg))));
				unset($lastrss, $x, $losuj, $jestkanal, $channelurl);
				
			} else {
				//błąd :(
				$this->send("Błąd: Nie można zainkludować klasy do parsowania rss (pffff)", $data, $type);
			}
		} elseif (!isset($tab[$data->messageex[1]]) && $data->messageex[1]!='add' && $data->messageex[1]!='remove' && $data->messageex[1]!='del') {
			$this->send("Błąd: Kanał ".$data->messageex[1]." nie istnieje!");
		}
					
		unset($jestkanal,$channellist);
	}
//*function_end	
?>